from langchain_core.tools import StructuredTool
from langchain_core.tools import ToolException


def get_weather(city:str) -> str:
    """获取天气"""
    raise ToolException(f"错误：没有名为 {city} 的城市")

get_weather_tool = StructuredTool.from_function(
    func=get_weather,
    name="get_weather",
    description="获取指定城市的天气",
    # 默认情况下，如果函数抛出ToolException，则将异常消息作为输出返回。
    # 如果设置为True，则将异常消息作为异常返回，False将会抛出ToolException。
    handle_tool_error=True
)

print(get_weather_tool.invoke({"city":"mme"}))